package main

import (
	"fmt"
	"html/template"
	"net/http"
)

func f1(w http.ResponseWriter, r *http.Request) {
	//定义一个函数 kua
	//要么只有一个返回值，要么有两个返回值，第二个返回值必须是 error 类型
	k := func(name string) (string, error) {
		return name + "年轻又帅气！", nil
	}
	//定义模版
	t := template.New("f.tmpl") //创建一个名字是 f.tmpl 的模版对象，名字一定要和接下来解析的模版文件的名字能对应上
	//告诉模版引擎，我现在多了一个自定义的函数 kua
	t.Funcs(template.FuncMap{
		"kua": k,
	})
	//解析模版
	_, err := t.ParseFiles("web06/f.tmpl")
	if err != nil {
		fmt.Printf("Parse template failed, err:%v\n", err)
		return
	}
	name := "小王子"
	//渲染模版
	t.Execute(w, name)
}

func demo1(w http.ResponseWriter, r *http.Request) {
	//定义模版
	//解析模版
	t, err := template.ParseFiles("web06/t.tmpl", "web06/ul.tmpl") //把 被包含 的模板文件写在 后面
	if err != nil {
		fmt.Printf("Parse template failed, err:%v\n", err)
		return
	}
	name := "小王子"
	//渲染模版
	t.Execute(w, name)
}

func main() {
	http.HandleFunc("/", f1)
	http.HandleFunc("/tmpl", demo1)
	err := http.ListenAndServe(":9000", nil)
	if err != nil {
		fmt.Printf("HTTP server start failed, err:%v\n", err)
		return
	}
}
